#ifndef __M_SESSION_H__
#define __M_SESSION_H__
#include<iostream>
#include<jsoncpp/json/json.h>
#include<mutex>
#include<unordered_map>
namespace im
{
    class SessionManager
    {
      private:
        uint64_t _next_id;
        std::mutex _mutex;
        std::unordered_map<uint64_t,Json::Value> _ss;
      public:
        SessionManager():_next_id(1){}
        //新增会话信息
        uint64_t insert(const Json::Value& user)
        {
            std::unique_lock<std::mutex> lock(_mutex);  //作用域结束之后自动解锁
            uint64_t ssid=_next_id;
            _ss.insert(std::make_pair(_next_id,user));
            _next_id++;
            return ssid;
        }
        //获取会话信息
        bool get_session_user(uint64_t ssid,Json::Value* user)
        {
            auto it=_ss.find(ssid);
            if(it==_ss.end())
            {
                return false;
            }
            *user=it->second;
            return true;
        }
        //判断id是否存在
        bool exists(uint64_t ssid)
        {
            auto it=_ss.find(ssid);
            if(it==_ss.end())
            {
                return false;
            }
            return true;
        }
        //移除信息
        void remove(uint64_t ssid)
        {
            _ss.erase(ssid);
        }
    };
}


#endif